module OpcoesControleHelper
  attr_writer :opcoes_de_controle
  attr_writer :bloqueados

  def controles_para_edicao? 
    @opcoes_de_controle == :edicao
  end
  alias opcoes_de_controle_para_edicao? controles_para_edicao?

  def controles_para_acao?
    @opcoes_de_controle == :acao or @opcoes_de_controle == :acoes
  end
  alias opcoes_de_controle_para_acao? controles_para_acao?

  def bloqueado?(nome)
    @bloqueados[nome]
  end
  alias bloqueada? bloqueado?

  def bloquear(*nomes)
    @bloqueados ||= {}
    nomes.each { |nome| @bloqueados[nome] = true }
  end

  def controles_para_edicao!
    @opcoes_controle = :edicao
  end
  alias opcoes_de_controle_para_edicao! controles_para_edicao!

  def controles_para_acao!
    @opcoes_controle = :acao
  end
  alias opcoes_de_controle_para_acao! controles_para_acao!
end
